package com.yanggu.scala.chapater10

import scala.collection.mutable
import scala.collection.mutable.Queue

object QueueDemo01 {

  def main(args: Array[String]): Unit = {
    //1. 队列是一种常见的数据结构。其特点是先进先出，FIFO(FIST IN FIRST OUT)
    //2. 在scala中使用Queue。
    //3. 在scala中有可变和不可变的Queue。一般而言使用可变的immutable.Queue

    //创建一个队列
    val queue = new mutable.Queue[Int]
    println(queue)

    //给队列中添加元素
    queue += 9
    println(queue)
    //将List中的元素一个一个按照顺序, 添加到末尾
    queue ++= List(1, 2, 3, 4)
    println(queue)

    //从队列的头部取出元素。这里queue本身会发生变化
    println(queue.hashCode())
    println(queue.dequeue())
    println(queue.hashCode())

    //队尾加入元素
    queue.enqueue(5)
    println(queue)

    //返回队列中的元素
    println("==================Queue-返回队列中的元素=====================")

    //1. 返回队列的第一个元素
    //这里并没有改变。只是查看值
    println(queue.hashCode())
    println(queue.head)
    println(queue.hashCode())

    println()

    //2. 返回队列的最后一个元素
    println(queue.last)

    //3. 返回除了第一个元素之外的其他元素。可以级联使用
    println(queue.hashCode())
    println(queue.tail)
    println(queue.tail.tail.tail)
    println(queue.hashCode())
  }

}
